/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package stub;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.FileNotFoundException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.net.URL;


/**
 *
 * @author nacho
 */
public class Stub {
    static Tabla tabla = new Tabla();


    static public void main(String args[]) {
        URL puerto;
        int fd = 0;
        Socket socketCliente;
        ServerSocket server;

        try {
            puerto = new URL("http", "localhost", Integer.valueOf(args[0]), "");
           // Network net = new Network(puerto);
            server = new ServerSocket(puerto.getPort());


            while (true) {
                try {
                    System.out.println("Esperando conexión cliente......");
                    //net.accept();
                    socketCliente = server.accept();
                    System.out.println("Se conecto un cliente en el puerto: " + socketCliente.getPort());

                    ProcesarMensaje procesar = new ProcesarMensaje(socketCliente);
                    procesar.start();
                    //while(seguir) {
                        //ensaje = net.receive();
                    
                    //net = new Network(puerto);
                } catch (SocketException ex) {
                    System.out.println("El cliente se desconectó");
                    tabla.remove(fd);
                    System.out.println("El archivo ha sido liberado en la tabla");
                }
            } 
        } catch (MalformedURLException ex) {
            Logger.getLogger(Stub.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Stub.class.getName()).log(Level.SEVERE, null, ex);
        }

    }


    private void tratarError(int error) throws ConnectionException, FileFoundException, IllegalAccessException, FileNotFoundException, OperationException {
        switch (error) {
            case Protocolo.ACCESS_DENIED:
                throw new IllegalAccessException("Acceso denegado");
            case Protocolo.CONECTION_FAILED:
                throw new ConnectionException("Falló la conexión");
            case Protocolo.FILE_FOUND:
                throw new FileFoundException();
            case Protocolo.FILE_NOT_FOUND:
                throw new FileNotFoundException("El archivo no existe");
            case Protocolo.OPERATION_ERROR:
                throw new OperationException("Error en la operación");
        }
    }

}
    
